package server;

import java.util.HashMap;

/**
 * 容器基类，提供键值对映射关系管理
 *
 * @param <CC>
 */
public abstract class BaseContainer<CC> {
    protected final HashMap<String, CC> children = new HashMap<>();

    /**
     * 追加容器成员
     *
     * @param name
     * @param child
     * @throws Exception
     */
    protected void addChildren(String name, CC child) throws Exception {
        // 禁止同一个上下文中，加载相同名的成员
        if (children.containsKey(name)) {
            throw new Exception(String.format("禁止重复添加子节点 [%s]", name));
        }
        children.put(name, child);
    }

    /**
     * 获取容器成员
     *
     * @param name
     * @return
     */
    protected CC getChild(String name) {
        return children.get(name);
    }
}
